$(function() {
	$('#user-table').bootstrapTable({
		method : 'post',
		url : 'system/user/getList',
		cache : false,
		contentType: "application/json",//远程数据请求的“contentType”类型（如：application/json，application/x-www-form-urlencoded）。默认值application/json。
		height : $(window).height()-180,
		undefinedText : "--",//定义默认的undefined显示文字。
		striped : true,//使表格带有条纹。
		sortName : "username",
		sortOrder : "asc",
		dataType : "json",
		pagination : true,//设置True在表格底部显示分页工具栏。
		sidePagination : "server", //定义表格分页的位置，只能是“client”（客户端）和“server”（服务器端）。
		pageSize : 25,
		pageList : [ 10, 25, 50, 100, 200 ],
		search : true,//启用搜索输入框。
		showColumns : true,//设置为True可显示表格显示/隐藏列表。
		showToggle:true,//设置为True可显示切换普通表格和名片（card）布局。
		showRefresh : true,//设置为True可显示刷新按钮。
		minimumCountColumns : 2,//表格显示/隐藏列表时可设置最小隐藏的列数。
		clickToSelect : true,//设置为True时点击行即可选中单选/复选框。
		toolbar : "#toolbar",//自定义工具栏
		queryParamsType : "limit",//设置为“limit”可以发送标准的RESTFul类型的参数请求。
		queryParams : function(params) {
			var isDesc = false;
			if("desc"==params.order){
				isDesc = true;
			}
			return {
				pageSize : params.limit,
				pageNum : (params.offset / params.limit) + 1,
				sort : params.sort,
				desc : isDesc,
				or : true,
				username : params.search,
				nickname : params.search,
				phone : params.search,
				email : params.search
			};
		},
		responseHandler : function(response){
			if(response.result && response.itemCount){
				return {
					"rows": response.result,
					"total": response.itemCount
				};
			}else{
				return {
					"rows": [],
					"total": 0
				};
			}
		},
		columns : [ {
			field : 'state',
			checkbox : true
		}, {
			field : 'username',
			title : '用户名',
			align : 'center',
			valign : 'middle',
			sortable : true
		}, {
			field : 'nickname',
			title : '昵称',
			align : 'center',
			valign : 'middle',
			sortable : true,
			formatter: nameFormatter
		}, {
			field : 'phone',
			title : '手机号',
			align : 'center',
			valign : 'middle',
			sortable : true
		}, {
			field : 'email',
			title : '邮箱号',
			align : 'center',
			valign : 'middle',
            sortable : true
		}, {
			field : 'operate',
			title : '操作',
			align : 'center',
			valign : 'middle',
			clickToSelect : false,
			formatter : operateFormatter,
			events : operateEvents
		} ]
	});
	
	$('#roleIds').multiselect({
		includeSelectAllOption: true,
		selectAllText:"全选",
		enableCaseInsensitiveFiltering: true,
		filterPlaceholder:"搜索",
		buttonClass:"form-control info-input",
		buttonWidth:"100%",
		maxHeight: 200,
		buttonText: function(options, select) {
			if (options.length === 0) {
                return '请选择 ...';
            }else if (options.length > 5) {
                return '选择了('+options.length+')个角色';
            }else {
                 var labels = [];
                 options.each(function() {
                     if ($(this).attr('label') !== undefined) {
                         labels.push($(this).attr('label'));
                     }else {
                         labels.push($(this).html());
                     }
                 });
                 return labels.join(', ') + '';
             }
		},buttonTitle: function(options, select) {
            var labels = [];
            options.each(function () {
                labels.push($(this).attr('title'));
            });
            return labels.join(',');
        }
	});
	
	get("system/role/findRoles",function (array, textStatus) {
		var options = [];
		$.each(array,function(i,v){
			options.push({label: v.roleName, title: v.roleName, value: v.roleId});
		});
		 $('#roleIds').multiselect('dataprovider', options);
	});
	
	$("#addUser-btn").click(function(){
		$("#userId").val("");
		$("#username").val("");
		$("#nickname").val("");
		$("#phone").val("");
		$("#email").val("");
		$("#userinfo-save-btn").attr("disabled","disabled");
		$("#username").removeAttr("readOnly");
		$(".info-label").html("");
		$('#roleIds').multiselect('deselectAll',false);
		$('#roleIds').multiselect('updateButtonText');
		$("#userinfo-modal").modal("show");
	});

	$("#delUser-btn").click(function(){
		var array = $('#user-table').bootstrapTable("getSelections");
		if(array!=null && array.length>0){
			var ids = "";
			$.each(array,function(i,v){
				ids+=v.userId+",";
			});
			bootbox.confirm("您确定要将用户删除吗？", function(result){
				if(result){
					del("system/user/delUsers/"+ids,function (json, textStatus) {
						if(json.success){
							bootbox.alert("用户删除成功");
							$('#user-table').bootstrapTable("refresh",{silent: true});
						}else{
							bootbox.alert("用户删除失败");
						}
					});
				}
			});
		}else{
			bootbox.alert("请选择要删除的用户");
		}
	});

	$("#resetPassword-btn").click(function(){
		var array = $('#user-table').bootstrapTable("getSelections");
		if(array!=null && array.length>0){
			var ids = "";
			$.each(array,function(i,v){
				ids+=v.userId+",";
			});
			bootbox.confirm("您确定要恢复初始密码吗？", function(result){
				if(result){
					post("system/customer/resetCustomerPassword",function (json, textStatus) {
						if(json.success){
							bootbox.alert("密码重置成功");
						}else{
							bootbox.alert("密码重置失败");
						}
					},{ids:ids});
				}
			});
		}else{
			bootbox.alert("请选择要重置密码的用户");
		}
	});
	
	$("#username").blur(function(){
		var userId = $("#userId").val();
		if(userId==null || typeof(userId)=="undefined" || userId.replace(/(^\s*)|(\s*$)/g, "")==""){
			post("system/user/isUsedName",function (json, textStatus) {
				if(json.success){
					$("#username").parents(".form-group").removeClass("has-success").addClass("has-error");
					$("#username-span").removeClass("glyphicon glyphicon-ok").addClass("glyphicon glyphicon-remove");
					$("#username-label").html("<code>*用户名已存在*</code>");
					$("#userinfo-save-btn").attr("disabled","disabled");
				}else{
					$("#username").parents(".form-group").removeClass("has-error").addClass("has-success");
					$("#username-span").removeClass("glyphicon glyphicon-remove").addClass("glyphicon glyphicon-ok");
					$("#username-label").html("");
					$("#userinfo-save-btn").removeAttr("disabled");
				}
			},{username:$(this).val()});
		}
	});
	
	$("#userinfo-save-btn").click(function(){
		var username = $("#username").val();
		if(username==null || typeof(username) == "undefined"){
			$("#username-label").html("<code>*请输入用户名*</code>");
			return false;
		}
		username = username.replace(/(^\s*)|(\s*$)/g, "");
		if(username==""){
			$("#username-label").html("<code>*请输入用户名*</code>");
			return false;
		}
		
		var nickname = $("#nickname").val();
		if(nickname==null || typeof(nickname) == "undefined"){
			$("#nickname-label").html("<code>*请输入昵称*</code>");
			return false;
		}
		nickname = nickname.replace(/(^\s*)|(\s*$)/g, "");
		if(nickname==""){
			$("#nickname-label").html("<code>*请输入昵称*</code>");
			return false;
		}
		
		var phone = $("#phone").val();
		if(phone==null || typeof(phone) == "undefined"){
			$("#phone-label").html("<code>*请输入手机号*</code>");
			return false;
		}
		phone = phone.replace(/(^\s*)|(\s*$)/g, "");
		if(phone==""){
			$("#phone-label").html("<code>*请输入手机号*</code>");
			return false;
		}
		var pattern = /^[0-9]*$/;
		if(!pattern.test(phone)){
			$("#phone-label").html("<code>*手机号格式不正确,请输入正确的手机号*</code>");
			return false;
		}
		
		var email = $("#email").val();
		if(email==null || typeof(email) == "undefined"){
			$("#email-label").html("<code>*请输入邮箱号*</code>");
			return false;
		}
		email = email.replace(/(^\s*)|(\s*$)/g, "");
		if(email==""){
			$("#email-label").html("<code>*请输入邮箱号*</code>");
			return false;
		}
		var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+\.([a-zA-Z0-9_-])+/;
		if(!pattern.test(email)){
			$("#email-label").html("<code>*邮箱号格式不正确,请输入正确的邮箱号*</code>");
			return false;
		}
		
		var userId = $("#userId").val();
		if(userId==null || typeof(userId)=="undefined" || userId.replace(/(^\s*)|(\s*$)/g, "")==""){
			post("system/user/isUsedName",function (json, textStatus) {
				if(json.success){
					$("#username").parents(".form-group").removeClass("has-success").addClass("has-error");
					$("#username-span").removeClass("glyphicon glyphicon-ok").addClass("glyphicon glyphicon-remove");
					$("#username-label").html("<code>*用户名已存在*</code>");
					$("#userinfo-save-btn").attr("disabled","disabled");
				}else{
					$("#username").parents(".form-group").removeClass("has-error").addClass("has-success");
					$("#username-span").removeClass("glyphicon glyphicon-remove").addClass("glyphicon glyphicon-ok");
					$("#username-label").html("");
					$("#userinfo-save-btn").removeAttr("disabled");
					saveUser();
				}
			},{username:username});
		}else{
			saveUser();
		}
	});
});

function nameFormatter(value, row, index){
	var icon = index % 2 === 0 ? 'glyphicon-star' : 'glyphicon-star-empty';
	return '<i class="glyphicon ' + icon + '"></i> ' + value;
}

function operateFormatter(value, row, index) { 
    return [
        '<a class="resetPassword" href="javascript:void(0);" title="重置密码">',
           	'<i class="glyphicon glyphicon-repeat"></i>重置密码',
        '</a>&nbsp;&nbsp;',
        '<a class="edit" href="javascript:void(0);" title="编辑">',
            '<i class="glyphicon glyphicon-edit"></i>编辑',
        '</a>&nbsp;&nbsp;',
        '<a class="remove" href="javascript:void(0);" title="删除">',
            '<i class="glyphicon glyphicon-remove"></i>删除',
        '</a>'
    ].join('');
}

window.operateEvents = {
	'click .resetPassword': function (e, value, row, index) {
		bootbox.confirm("您确定要恢复初始密码吗？", function(result){
			if(result){
				post("system/user/resetPassword",function (json, textStatus) {
					if(json.success){
						bootbox.alert("密码重置成功");
					}else{
						bootbox.alert("密码重置失败");
					}
				},{ids:row.userId});
			}
		});
	},
	'click .edit': function (e, value, row, index) {
		post("system/user/findUserById",function (json, textStatus) {
			if(json!=null){
				$("#userId").val(json.userId);
				$("#username").val(json.username);
				$("#nickname").val(json.nickname);
				$("#phone").val(json.phone);
				$("#email").val(json.email);
				$("#userinfo-save-btn").removeAttr("disabled");
				$("#username").attr("readOnly","readOnly");
				$(".info-label").html("");
				$('#roleIds').multiselect('deselectAll',false);
				$('#roleIds').multiselect('updateButtonText');
				post("system/userRoleMap/getRolesByUserId",function (array, textStatus) {
					if(array!=null){
						var roleIdArray = [];
						$.each(array,function(i,v){
							roleIdArray.push(v.roleId);
						});
						$('#roleIds').multiselect('select', roleIdArray);
					}
					$("#userinfo-modal").modal("show");
				},{userId:row.userId});
			}
		},{userId:row.userId});
	},
	'click .remove': function (e, value, row, index) {
		bootbox.confirm("您确定要将用户删除吗？", function(result){
			if(result){
				del("system/user/delUsers/"+row.userId,function (json, textStatus) {
					if(json.success){
						bootbox.alert("用户删除成功");
						$('#user-table').bootstrapTable("refresh",{silent: true});
					}else{
						bootbox.alert("用户删除失败");
					}
				});
			}
		});
	}
};

function saveUser(){
	var userId = $("#userId").val();
	var roleIdArray = $("#roleIds").val();
	var roleIds="";
	if(roleIdArray!=null && roleIdArray.length>0){
		$.each(roleIdArray,function(i,v){
			roleIds+=v+",";
		});
	}else{
		roleIds="-1";
	}
	var data = $("#userinfo-form").serializeJSON();//将表单序列化成json，再将json转成字符串
	postJson("system/user/editUser/"+roleIds,function (json, textStatus){
		console.log(json);
		if(json.success){
			if(userId==null || typeof(userId)=="undefined" || userId.replace(/(^\s*)|(\s*$)/g, "")==""){
				bootbox.alert("用户添加成功");
			}else{
				bootbox.alert("用户信息修改成功");
			}
			$('#user-table').bootstrapTable("refresh",{silent: true});
			//提交用户json.userId的角色信息
			
		}else{
			if(userId==null || typeof(userId)=="undefined" || userId.replace(/(^\s*)|(\s*$)/g, "")==""){
				bootbox.alert("用户添加失败:"+json.result);
			}else{
				bootbox.alert("用户修改失败:"+json.result);
			}
		}
    },data);
}
